#pragma once
#include "public.h"
#include <queue>
class VMemory;
class Modules;
class Module;
class Hooker;
class NativeHooks;
class Trace;
class VirtualNDK
{
public:
	VirtualNDK();
	~VirtualNDK();

public:
	VMemory* vmem;
	Modules* modules;
	Hooker* hooker;
	NativeHooks* native_hooks;
	Trace* trace;
	uc_engine *uc;
public:
	Module* load_library(char* filename, bool do_init = true);
	void call_symbol(Module* module,std::string symbol_name, int argc, char *argv[]);
	void call_native(uint64_t addr, int argc, char *argv[]);
};

